import request from '@/utils/request'

// 订单分页（可按状态筛选：PAID/UNPAID）
/**
 * 订单分页查询
 * @function pageOrders
 * @param {Object} params - 查询参数
 * @param {number} [params.pageNo] - 页码
 * @param {number} [params.pageSize] - 每页数量
 * @param {'PAID'|'UNPAID'} [params.status] - 按状态筛选
 * @returns {Promise<any>} Axios 响应
 */
export function pageOrders(params) {
  return request.get('/user/ticket/page', { params })
}

// 获取订单详情（仅本人）
/**
 * 获取订单详情（仅本人）
 * @function getOrder
 * @param {number|string} id - 订单ID
 * @returns {Promise<any>} Axios 响应
 */
export function getOrder(id) {
  return request.get(`/user/ticket/${id}`)
}

// 创建订单（mid, mname, price, note, quantity?）
/**
 * 创建订单
 * 注意：后端要求提供影院与座位信息以完成校验
 * @function createOrder
 * @param {Object} data - 订单创建参数
 * @param {number|string} data.mid - 电影ID
 * @param {string} data.mname - 电影名称
 * @param {number} data.price - 单价或总价
 * @param {number} [data.quantity] - 购票数量
 * @param {string} [data.note] - 备注
 * @param {number|string} data.cinemaId - 影院编号
 * @param {string} data.hallName - 影厅名称（如“1号厅”）
 * @param {string} data.seatLabel - 座位号（如“A12”）
 * @returns {Promise<any>} Axios 响应
 */
export function createOrder(data) {
  return request.post('/user/ticket', data)
}

// 购票并扣减余额（mid, mname, unitPrice, quantity, note）
/**
 * 购票并扣减余额
 * 重要：必须传递影院与座位参数；停业影院将拒绝购买
 * @function buyTicket
 * @param {Object} data - 购票参数
 * @param {number|string} data.mid - 电影ID
 * @param {string} data.mname - 电影名称
 * @param {number} data.unitPrice - 单价
 * @param {number} data.quantity - 数量
 * @param {string} [data.note] - 备注
 * @param {number|string} data.cinemaId - 影院编号
 * @param {string} data.hallName - 影厅名称（如“1号厅”）
 * @param {string} data.seatLabel - 座位号（如“A12”）
 * @returns {Promise<any>} Axios 响应
 */
export function buyTicket(data) {
  return request.post('/user/ticket/buy', data)
}

// 更新订单（id, status 或 note）
/**
 * 更新订单
 * @function updateOrder
 * @param {Object} data - 更新参数
 * @param {number|string} data.id - 订单ID
 * @param {'PAID'|'UNPAID'} [data.status] - 更新状态
 * @param {string} [data.note] - 更新备注
 * @returns {Promise<any>} Axios 响应
 */
export function updateOrder(data) {
  return request.put('/user/ticket', data)
}

// 删除订单（仅本人）
/**
 * 删除订单（仅本人）
 * @function deleteOrder
 * @param {number|string} id - 订单ID
 * @returns {Promise<any>} Axios 响应
 */
export function deleteOrder(id) {
  return request.delete(`/user/ticket/${id}`)
}